<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    数组扁平化:数组里面是数组,将多维的数组转换为一维数组
    // 方式一:
    // 1.直接利用数组提供的方法:flat
    // flat方法的主要作用就是:直接对数组进行扁平化的操作,参数数组扁平的维度
    // 推荐使用关键字:Infinity 无穷大
    <script>
        //var arr=[1,[2,3],[4,5,[6,7,[8,9,10]]]];
        // console.log(arr.flat(Infinity));//[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    </script>

    方式2:
    1,判断当前的数组的数组项是数组
    2.Array.isArray():检查括号里面的值是否是数组,返回布尔值.
    静态方法:构造函数开头,直接绑定在构造函数上面的方法,返回布尔值
    <script>
        // var arr=new Array();
        // var n1=null;
        // var n2=[123,456];
        // console.log(typeof n1);//object
        // console.log(typeof n2);//object
        // console.log(Array.isArray(n1));//false 不是数组
        // console.log(Array.isArray(n2));//true 是数组
    </script>

    实现数组的扁平化---递归
    <script>
        var arr=[1,[2,3],[4,5,[6,7,[8,9,10]]]];
        var arr1=[1,["a","b","c"],[2,3],[4,5,[6,7,[8,9,10]]]];
        //[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
        
        function faltten(arr){
            var result=[];//接收最后的结果
            if(Array.isArray(arr)){//是数组
                arr.forEach(function(item){
                    // console.log(item);
                    //得到啦数组的每一个数组项
                    // 1
                    // [2, 3]
                    // [4, 5, Array(3)]
                    if(Array.isArray(item)){//是数组
                        //每次在这里执行扁平化处理的函数
                        result=result.concat(faltten(item));
                    }else{
                        result.push(item);
                    }
                })
            }else{
                result.push(arr)
            }
            return result;
        }
        console.log(faltten(arr));
        console.log(faltten(arr1));
        



    </script>



</body>
</html>